# 设计散点图
import numpy as np
import matplotlib.pyplot as plt

# --------------  散点图----------------
w = 3 # 未知状态
b = 1 # 未知状态

x = np.arange(0,7)
noise = np.random.rand(len(x)) * 2
y = w * (x + noise) + (b + noise)

plt.plot(x,y,'ro')

# -------------- 预测线 ---------------

# 预测线的斜率
w0 = 2
# 预测线的轴截距
b0 = 0

y0 = w0 * x + b0

# 画出预测线
line, = plt.plot(x,y0,'b--')

for i in range(1000):

    # y0变化
    y0 = w0 * x + b0
    # 更新新的斜率的预测线
    line.set_data(x,y0)
    # 对预测线与真实散点之间进行方差计算
    e = np.mean((y - y0) ** 2)
    print(e)

    de_dw = np.mean(-2 * x * (y - y0))
    de_db = np.mean(-2 * (y - y0))
    # print(de_dw)

    # w0的变化
    w0 = w0 - 0.001 * de_dw
    b0 = b0 - 0.01 * de_db

    # 设置间隔时间
    plt.pause(1)
